home *** CD-ROM | disk | FTP | other *** search
/ isnet Internet / Isnet Internet CD.iso / prog / chat / 12 / 12.exe / SYSTEM / idraw.mrc < prev    next >
Encoding:
Text File  |  2000-02-16  |  8.4 KB  |  300 lines

  1. ;%%%%%%%%%%%%%%%%%%%%%%%%
  2. ;script iDraw
  3. ;version 7.20
  4. ;author Quietust/Sarek
  5. ;email quietust@ircN.org
  6. ;url http://www.ircN.org
  7. ;%%%%%%%%%%%%%%%%%%%%%%%%
  8. alias idraw {
  9.   sockudp -k idraw 4567
  10.   socklisten idrawlisten 4567
  11.   window -pfk @iDraw 27 22 512 384 @idraw
  12.   titlebar @iDraw -- Select a color and a thickness, then click in the window to draw
  13.   id.collist
  14.   id.thicklist
  15.   window -kal11Se @iDraw4 27 433 520 125
  16.   aline -l @iDraw4 $me
  17.   window -a @iDraw
  18. }
  19. alias -l id.udp {
  20.   var %a
  21.   set %a 0
  22.   :start
  23.   inc %a
  24.   if ($sock(iDraw.*,%a)) {
  25.     if ($sock(iDraw.*,%a).ip != $1) sockudp -k idraw 4567 $ifmatch 4567 $2-
  26.     goto start
  27.   }
  28. }
  29. alias -l id.tcp {
  30.   var %a
  31.   set %a 0
  32.   :start
  33.   inc %a
  34.   if ($sock(iDraw.*,%a)) {
  35.     if ($sock(iDraw.*,%a) != $1) sockwrite -n $ifmatch $2-
  36.     goto start
  37.   }
  38. }
  39. alias id.conn {
  40.   if ($1) {
  41.     if ($window(@iDraw) == $null) idraw
  42.     qctcp $1 iDraw $longip($ip)
  43.     iecho Sent $hc(iDraw) $sc(request) to $hc($1)
  44.     sockmark iDrawlisten iDraw. $+ $1
  45.   }
  46.   else iecho Syntax: /id.conn <nickname>
  47. }
  48. on 1:SOCKLISTEN:iDrawlisten {
  49.   var %z
  50.   set %z $sock($sockname).mark
  51.   if (%z == $null) {
  52.     iecho Unauthorized iDraw connection attempted!
  53.     return
  54.   }
  55.   sockaccept %z
  56.   idraw.login %z
  57.   sockmark $sockname
  58. }
  59. alias -l idraw.login {
  60.   var %a, %b, %z
  61.   sockwrite -n $1 LJ $me ( $+ $ip $+ )
  62.   set %a 0
  63.   :start
  64.   inc %a
  65.   if ($sock(iDraw.*,%a)) {
  66.     set %z $ifmatch
  67.     if (%z == $1) goto start
  68.     set %b 0
  69.     :start2
  70.     inc %b
  71.     if ($gettok($sock(%z).mark,%b,44)) {
  72.       sockwrite -n $1 RJ $ifmatch
  73.       goto start2
  74.     }
  75.     goto start
  76.   }
  77. }
  78. on 1:SOCKOPEN:iDraw.* {
  79.   if ($sockerr > 0) {
  80.     iecho Unable to establish iDraw connection to $gettok($sockname,2,46)
  81.     return
  82.   }
  83.   idraw.login $sockname
  84. }
  85. on 1:SOCKREAD:iDraw.* {
  86.   var %z
  87.   if ($sockerr > 0) {
  88.     iecho iDraw error while connected to $gettok($sockname,2,46)
  89.     return
  90.   }
  91.   sockread %z
  92.   if ($sockbr == 0) return
  93.   idraw.parse $sockname %z
  94. }
  95. on 1:SOCKCLOSE:iDraw.* {
  96.   var %w, %x, %y, %z
  97.   set %w $sock($sockname).mark
  98.   if (%w == $null) return
  99.   set %z $gettok($sockname,2,46)
  100.   set %y %z ( $+ $sock($sockname).ip $+ )
  101.   id.tcp $sockname SP %y ( $+ $me %z $+ )
  102.   echo $colour(Quit) -ti2 @iDraw4 *** Quits: %z ( $+ $me %z $+ )
  103.   set %w $remtok(%w,%y,1,44)
  104.   dline -l @iDraw4 $fline(@iDraw4,%z,1,1)
  105.   :sc
  106.   if (%w != $null) {
  107.     set %y $ifmatch
  108.     set %x $gettok(%x,1,44)
  109.     id.tcp $sockname SP %x ( $+ $me %z $+ )
  110.     echo $colour(Quit) -ti2 @iDraw4 *** Quits: %x ( $+ $me %z $+ )
  111.     dline -l @iDraw4 $fline(@iDraw4,$gettok(%y,1,32),1,1)
  112.     set %w $deltok(%w,1,44)
  113.     goto sc
  114.   }
  115.   if ($sock(iDraw.*,0) == 0) echo $colour(Info) -ti2 @iDraw4 *** Disconnected
  116. }
  117. alias -l idraw.parse {
  118.   var %z
  119.   set %z $sock($1).mark
  120.   if ($2 == LJ) {
  121.     if ($window(@iDraw) == $null) idraw
  122.     id.tcp $1 RJ $3-
  123.     echo $colour(Join) -ti2 @iDraw4 *** Local Join: $3-
  124.     sockmark $1 $addtok(%z,$3-,44)
  125.     aline -l @iDraw4 $3
  126.   }
  127.   elseif ($2 == RJ) {
  128.     id.tcp $1-
  129.     echo $colour(Join) -ti2 @iDraw4 *** Remote Join: $3-
  130.     sockmark $1 $addtok(%z,$3-,44)
  131.     aline -l @iDraw4 $3
  132.   }
  133.   elseif ($2 == LP) {
  134.     id.tcp $1 RP $3-
  135.     echo $colour(Part) -ti2 @iDraw4 *** Local Part: $3-
  136.     sockmark $1 $remtok(%z,$3-,1,44)
  137.     dline -l @iDraw4 $fline(@iDraw4,$3,1,1)
  138.     :lp
  139.     if ($gettok($ifmatch,1,44)) {
  140.       set %z $ifmatch
  141.       id.tcp $1 RP %z
  142.       echo $colour(Part) -ti2 @iDraw4 *** Remote Part: %z
  143.       dline -l @iDraw4 $fline(@iDraw4,$gettok(%z,1,32),1,1)
  144.       sockmark $1 $deltok($sock($1).mark,1,44)
  145.       goto lp
  146.     }
  147.     sockclose $1
  148.     if ($sock(iDraw.*,0) == 0) echo $colour(Info) -ti2 @iDraw4 *** Disconnected
  149.   }
  150.   elseif ($2 == RP) {
  151.     id.tcp $1-
  152.     echo $colour(Part) -ti2 @iDraw4 *** Remote Part: $3-
  153.     sockmark $1 $remtok(%z,$3-,1,44)
  154.     dline -l @iDraw4 $fline(@iDraw4,$3,1,1)
  155.   }
  156.   elseif ($2 == SP) {
  157.     id.tcp $1-
  158.     echo $colour(Quit) -ti2 @iDraw4 *** Quits: $3-
  159.     sockmark $1 $remtok(%z,$3-,1,44)
  160.     dline -l @iDraw4 $fline(@iDraw4,$3,1,1)
  161.   }
  162.   elseif ($2 == TXT) {
  163.     id.tcp $1-
  164.     echo -ti2 @idraw4 $3-
  165.   }
  166.   elseif ($2 == ACT) {
  167.     id.tcp $1-
  168.     echo $colour(Action) -ti2 @idraw4 $3-
  169.   }
  170. }
  171. alias id.accept {
  172.   if ($1) {
  173.     if ($?!="iDraw request from $1 ( $+ $2 $+ ) $+ $crlf $+ Accept it?" == $false) return
  174.     if ($window(@iDraw) == $null) idraw
  175.     sockopen iDraw. $+ $1 $3 4567
  176.   }
  177. }
  178. CTCP 1:iDraw *:? { .timer 1 0 id.accept $nick $address $longip($2) }
  179. on 1:UDPREAD:idraw {
  180.   sockread -f &iDraw
  181.   if ($bvar(&iDraw,1) isnum 1-3) id.udp $sock($sockname).saddr &iDraw
  182.   idraw.udpparse $bvar(&iDraw,1-)
  183. }
  184. alias -l idraw.udpparse {
  185.   if ($1 == 1) drawdot -r @idraw $rgb($2,$3,$4) $5 $rgb($6,$7,0) $rgb($8,$9,0)
  186.   elseif ($1 == 2) drawline -r @idraw $rgb($2,$3,$4) $5 $rgb($6,$7,0) $rgb($8,$9,0) $rgb($10,$11,0) $rgb($12,$13,0)
  187.   elseif ($1 == 3) clear @idraw
  188. }
  189. alias id.thicklist {
  190.   window -akl +b @iDraw3 547 22 80 50 @idraw3
  191.   clear @idraw3
  192.   aline @idraw3 <thinner-
  193.   aline @idraw3 -thicker>
  194.   if (%idraw.thickness == $null) set %idraw.thickness 2
  195.   aline @idraw3 $str(á,$sub(%idraw.thickness,1)) $+ %idraw.thickness
  196. }
  197. alias id.collist {
  198.   window -afkp +b @iDraw2 4 22 20 340 @idraw2
  199.   drawrect -f @idraw2 0 1 0 0 20 20
  200.   drawrect -f @idraw2 1 1 0 20 20 20
  201.   drawrect -f @idraw2 2 1 0 40 20 20
  202.   drawrect -f @idraw2 3 1 0 60 20 20
  203.   drawrect -f @idraw2 4 1 0 80 20 20
  204.   drawrect -f @idraw2 5 1 0 100 20 20
  205.   drawrect -f @idraw2 6 1 0 120 20 20
  206.   drawrect -f @idraw2 7 1 0 140 20 20
  207.   drawrect -f @idraw2 8 1 0 160 20 20
  208.   drawrect -f @idraw2 9 1 0 180 20 20
  209.   drawrect -f @idraw2 10 1 0 200 20 20
  210.   drawrect -f @idraw2 11 1 0 220 20 20
  211.   drawrect -f @idraw2 12 1 0 240 20 20
  212.   drawrect -f @idraw2 13 1 0 260 20 20
  213.   drawrect -f @idraw2 14 1 0 280 20 20
  214.   drawrect -f @idraw2 15 1 0 300 20 20
  215.   drawrect @idraw2 1 1 0 320 19 19
  216.   drawline @idraw2 1 1 0 321 20 321
  217.   if (%idraw.color == $null) set %idraw.color 0
  218.   drawrect -rf @idraw2 %idraw.color 1 1 322 17 16
  219. }
  220. alias id.putdot {
  221.   var %a, %b, %c, %z
  222.   set %a $rgb(%idraw.color)
  223.   set %b $deltok($rgb(%idraw.oldmousex),3,44)
  224.   set %c $deltok($rgb(%idraw.oldmousey),3,44)
  225.   set %z 1 %a %idraw.thickness %b %c
  226.   bset &iDraw.send 1 $replace(%z,$chr(44),$chr(32))
  227.   sockudp -k idraw 4567 $ip 4567 &iDraw.send
  228. }
  229. alias id.putline {
  230.   if ((%idraw.oldmousex) && (%idraw.oldmousey)) {
  231.     if ($mouse.key & 1) {
  232.       var %a, %b, %c, %d, %e, %z
  233.       set %a $rgb(%idraw.color)
  234.       set %b $deltok($rgb(%idraw.oldmousex),3,44)
  235.       set %c $deltok($rgb(%idraw.oldmousey),3,44)
  236.       set %d $deltok($rgb($mouse.x),3,44)
  237.       set %e $deltok($rgb($mouse.y),3,44)
  238.       set %z 2 %a %idraw.thickness %b %c %d %e
  239.       bset &iDraw.send 1 $replace(%z,$chr(44),$chr(32))
  240.       sockudp -k idraw 4567 $ip 4567 &iDraw.send
  241.     }
  242.     set %idraw.oldmousex $mouse.x
  243.     set %idraw.oldmousey $mouse.y
  244.   }
  245.   elseif ($mouse.key & 1) {
  246.     id.putdot
  247.     set %idraw.oldmousex $mouse.x
  248.     set %idraw.oldmousey $mouse.y
  249.   }
  250. }
  251. alias id.clear {
  252.   bset &iDraw.send 1 3
  253.   sockudp -k idraw 4567 $ip 4567 &iDraw.send
  254. }
  255. on 1:CLOSE:@idraw* {
  256.   window -c @idraw
  257.   window -c @idraw2
  258.   window -c @idraw3
  259.   window -c @idraw4
  260.   if ($sock(idraw.*)) sockwrite -n idraw.* LP $me ( $+ $ip $+ )
  261.   sockclose idraw*
  262. }
  263. alias id.setthick {
  264.   if ($sline(@idraw3,1).ln == 1) dec %idraw.thickness
  265.   elseif ($sline(@idraw3,1).ln == 2) inc %idraw.thickness
  266.   if (%idraw.thickness < 1) set %idraw.thickness 1
  267.   if (%idraw.thickness > 9) set %idraw.thickness 9
  268.   rline @idraw3 3 $str(á,$sub(%idraw.thickness,1)) $+ %idraw.thickness
  269. }
  270. menu @idraw {
  271.   mouse { id.putline }
  272.   sclick { id.putdot }
  273.   leave { set %idraw.oldmousex 0 | set %idraw.oldmousey 0 }
  274.   -
  275.   clear { id.clear }
  276.   add user { id.conn $$?="Enter nickname" }
  277. }
  278. menu @idraw2 {
  279.   sclick {
  280.     if ($mouse.y < 320) set %idraw.color $getdot(@idraw2,$mouse.x,$mouse.y)
  281.     drawrect -rf @idraw2 %idraw.color 1 1 322 17 16
  282.   }
  283. }
  284. menu @idraw3 {
  285.   lbclick { id.setthick }
  286.   dclick { id.setthick }
  287. }
  288. on 1:INPUT:@idraw4 {
  289.   if ((($1 == $null) || ($left($1,1) == /)) && ($1 != /me)) return
  290.   if ($1 == /me) {
  291.     if ($sock(idraw.*)) sockwrite -n idraw.* ACT * $me $2-
  292.     echo $colour(Action) -ti2 @idraw4 * $me $2-
  293.   }
  294.   else {
  295.     if ($sock(idraw.*)) sockwrite -n idraw.* TXT < $+ $me $+ > $1-
  296.     echo -ti2 @idraw4 < $+ $me $+ > $1-
  297.   }
  298.   halt
  299. }
  300.